Program by Dan Walkowski (walkowsk@taurus.apple.com) (aka: Ombra)
Documentation by Brian Roddy (roddy@taurus.apple.com) (aka: Morpheus) and Dan
Changes in version 0.6.2:
•Fixed a bunch of bugs.
•The Save and Save As... commands now work the way they ought to. (ie: more than once :)
Requisite Junk:
Marathon is a trademark of Bungie and we all love them for sacrificing a substantial chunk of their youth to make it. They are not responsible for this editor or the havoc that can be wreaked by using it. Please don't bug them with questions about it and please make sure you pay for your copy of Marathon. Finally, Mia can be distributed freely with this documentation file. Don't bug us about it either. We offer no guarantees and we're too busy wasting our youth playing marathon to care.
Overview:
Mia, in it's current state, is a first step towards a full fledged map editor for Marathon. It allows you to load a map file, view any of the existing levels, shuffle around their layouts, and modify the placement and number of objects.
When you start up Mia there are several palettes on the screen. The first is the draw tools, the second is for editing polygon attributes, the third is for object locations, and the fourth is for editing the amount of objects.
Future versions will allow editing of light sources, teleporters, and full editing of the points and polygons. The documentation should improve too. Thanks for being patient.
Files and the Level List:
The New menu items does nothing now. You need to use the Open menu item to choose an existing Map file (preferably a backup of the Map file that comes with the game). Opening a file will bring up a window with a list of all of the levels. Double click on a level name to bring up an editor for this level. Note that you can have multiple level editors open at the same time (the only limit is memory). Editing levels is described below.
Changes to levels are not saved until you choose the save menu item. All changes are held in memory until this time. (Which means you can run out of memory by opening, editing, and keeping the changes to many levels at once.)
Tools:
Only the first three tools currently work. I know that the tool icons leave something to be desired. Deal with it.
The first tool is the selection/dragging tool. You can use it to select polygons, drag polygons, drag corners of polygons, select objects, and drag objects.
The second tool is the Add Object tool. It will add an object to the map wherever you click. Additionally, it will make the object be of the same group, type, and facing as whatever you have showing in the Object Palette. (If nothing is selected, it will be a default type.)
The third tool is the Remove Object tool. It will remove from the map any object you click on.
Map Editing:
When you open a level, an editor will appear which displays the points, lines, polygons, and object locations that make up the level. The grid menu at the top allows you to zoom in and out. The view menu allows you to specify what type of things are displayed. The draw tools do nothing now.
You can select and drag polygons and points to rearrange the map. Note that Marathon cannot handle polygons which have internal angles which are too small or too large. If they are too small, that is less then around 15 degrees, then problems will occur when you try to walk into that corner. If they are too large, greater than 180 degrees, the game will either show graphic errors when looking at that corner or the game will crash. (ie: all polygons must be convex) Mia does not check for these cases yet, so you can get yourself into trouble if you're not careful.
You can drag object locations around from polygon to polygon. Trying to use a map that has object locations that are not inside of polygons is dangerous. Don't do it. More on object locations below.
Objects and Object Locations:
Marathon follows an interesting, if complex, scheme for dealing with putting objects on a level. In Marathon, objects are anything that is rendered as sprites. They can be weapons, ammunition, monsters, inanimate objects (like barrels), goals, player locations. All are treated the same in terms of how these objects are placed on a map. There are object locations and there is object placement information.
First, object locations. These are the small boxes which show up on the map. Object locations specify potential places for objects to appear. Each of these object locations can contain one type of item. This type can be specified by clicking on an object location on the map and using the object location editing window. You can drag these locations around the map.
Second, placement information. This specifies how many objects of a particular type can appear, where they will appear, and how often they will appear. This information can be specified in the object placement window. The first and most important item in the window is the random checkbox. If this is not checked, then objects will only show up in their specified object locations. If the random box is checked, objects will be placed randomly throughout the map based on the rest of the placement information.
How does Marathon decide when and how many objects to place? This is done using the five numbers listed in the fields of the object placement window. First there is the Initial # field. This specifies the number of objects of that type which are placed on the level at startup. If they are being placed randomly, this number will automatically be placed. If they are not being placed randomly, they will be put into their locations.
The next fields for the object are the minimum and maximum. This specifies the min and max number of objects of that type which will be available on a level at any given time. Note that this means on the map or in the hands of a player. Thus if the maximum number of flamethrowers is 1 and a player has picked it up, another will not appear until that player is killed.
The final two fields rand # and freq, specify the maximum number of times a new object will appear to replenish the object and the frequency the object will be replenished respectively. The y field specifies the percentage chance that the object will reappear each time marathon checks (the frequency of this is unknown).
Note, typing stupid values into these fields could result in weird behavior or a crash. Be careful.
All of this might seem a bit confusing, but take a look at some simple examples:
Example #1:
Bob decides he wants to spice up his sex life, so he buys a...wait, I mean Bob decides he wants to spice up his network Marathon game, so he edits Waldo World Arena, and changes one of the grenade magazines into a juggernaut. Then he saves the map and plays. Then he yells and sends me nasty email because no juggernaut appears on the map. Then I laugh and send him sarcastic email back. What was Bob’s mistake? He forgot to edit the placement information for juggernauts to indicate that at least 1 juggernaut was allowed to exist on this level. He edits the level again, this time changing the ‘init’ field of the juggernaut placement information to 1. Now he saves the map and plays. Bliss.
Example #2:
A different (and smarter) Bob decides he wants to add some troopers to Waldo World Arena. He wants one to stand in front of each of the four doors, and three more to be placed randomly. He wants there to be at least one on the map at all times, but never more than seven. He also wants the total number of troopers that will ever appear to be 20. (ie: after 20 have been killed, no more will appear) What does he do? He places four objects on the map where he wants them, setting their types to ‘trooper’. Then he edits the trooper placement information. He set the initial # field to 7, sets the min # field to 1, sets the max # field to 7, sets the rand # field to 20, and checks the random location checkbox. Then he sets the frequency field to, oh, say 50%, so that they will take a short while to appear after dying.
Ideas:
Try messing with Waldo World Arena. Change the type of one of the ammo object locations to be a flamethrower location. Then go to the object placement window and set the initial # to 1, set the minimum to 1 and the maximum to 1, set the rand # to -1 (infinite) and the frequency to 50%. Voila, now you can toast those damn missile launchers.
Another fun thing to try. Add hulks to the arena by choosing them from the object placement window. Click on the random checkbox and choose some appropriate values (not too many or it'll get real frustrating).
Warnings:
•Not all the objects and monsters that are available in Mia’s menus have definitions in the shapes and physics files. This means that some monsters don’t actually ‘exist’. If you try to place them on the map, you will likely cause a crash.
•Remember to make all your polygons convex.
•Remember to make sure all objects are inside polygons.
•To place objects into polygons that are ‘underneath’ other polygons, you may have to edit the poly field directly.
PS:
Dan wants to take this opportunity to tell Mia how cool she is, and to ask her not to mind that he did such an incredibly geeky thing as name a piece of software after her.
PPS:
Brian wishes to thank all those people that made this possible, particularly the divinely inspired people at the Sunshine corporation who invented Cheez-Its. Thanks y'all. Every cheez-it is a tiny packet of joy.